package cn.smbms.dao;

import cn.smbms.entity.Product;
import org.springframework.data.jpa.repository.JpaRepository;
        import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;

/**
 * 定义符合Spring Data JPA规范的接口
 */
public interface ProductDao extends JpaRepository<Product,Integer>,
        JpaSpecificationExecutor<Product> {

    //使用jpql的方式查询所有的商品信息
    @Query("from Product ")
    List<Product> findAllProduct();

    //使用参数位置绑定参数的值 参数位置必须从1开始
    @Query("from Product where productName like concat('%',?1,'%') and " +
            "productId=?2 ")
    List<Product> findProductNames(String productName,int productId);

    //使用参数命名的方式绑定参数
    @Query("from Product where productId=:id")
    Product findProductId(@Param("id") int id);

    //执行修改操作
    @Query("update Product set productName=:name where productId=:id")
    @Modifying
    void updateProduct(@Param("id")int id,@Param("name")String name);


    @Query(value = "select * from Product ",nativeQuery = true)
    List<Product> findSql();


    Product findProductByProductIdAndProductName(int id,String name);

    List<Product> findAllByProductIdIn(int... ids);

}
